// import Vue from 'vue'
//导入axios
import axios from 'axios';
//导入Message
import {
    Message
} from 'element-ui'
//导入获取Token方法
import {
    getLocal,
    removeLocal
} from '@/utils/local.js'

//导入路由
// import router from '../router';
import router from '@/router/index.js'

//创建一个axios副本
let _fetch = axios.create({
    baseURL: process.env.VUE_APP_URL,
    withCredentials: true
})
// Vue.prototype.$axios = _fetch

// 添加请求拦截器
_fetch.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    //统一在请求拦截加上请求头
    config.headers.token = getLocal('token')
    console.log('请求拦截', config);
    return config;
}, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
_fetch.interceptors.response.use(
    function (response) {
        // 对响应数据做点什么
        if (response.data.code == 200) {
            return response
        } else if (response.data.code == 206) {
            //token错误,要么token失效 非法调用 回至登录页(1.清除token 2.跳转至登录页)
            removeLocal('token')
            Message.error(response.data.message)
            //router===this.$router
            router.push('/login')
            //不让axios调用执行.then 直接执行.catch
            return Promise.reject(response.data.message)
            //this.$router.push('/login') this.$router ===router实例化对象
        } else {
            //Message使用
            //如果response.data.code 不是200则不希望.then执行,应该执行.catch
            Message.error(response.data.message)
            return Promise.reject(response.data.message)
        }
    },
    function (error) {
        // 对响应错误做点什么
        return Promise.reject(error);
    }
)

export default _fetch